Data compression is widely used and vital to the high-speed and efficient exchange and storage of data. One of the goals of data compression is to compress original data as much as possible, transmit or store the compressed data, and then uncompress the compressed data to reconstruct the original data. Better compression means that, at a given signal to noise ratio, the compressed data are smaller and thus use fewer bits of information to represent the original data. Using fewer bits of information both reduces the time required to transmit the compressed data and the amount of storage space needed to store the compressed data. This can significantly shorten the download time of compressed data (such as from the Internet) and can save precious space on storage media (such as a hard disk). This results in a savings of both time and expense.
Current data compression techniques for video data take advantage of the fact that much of the material in video frames is redundant. Traditional motion compensation techniques used to compress video data (such as those used in H.261 to H.264 and MPEG) are generally block-based. On the encoder side, block-based motion compensation techniques use a current frame and a reference frame. The current frame is divided into blocks. For each block, the reference frame is searched to find a similar block that provides the best match. The matching block in the reference frame is subtracted from the block in the current frame to provide a difference. This difference (also called “motion compensated frame difference”) is encoded along with the motion vectors that indicate the position of the block in the current frame. The decoder can recover the current frame using the reference frame and the encoded difference. These block-based motion compensation techniques require that both the encoder and decoder have a reference frame. This means that the reference frame must be received completely by the decoder before the current frame can be decoded.
Current block-based motion compensation techniques typically have discontinuities in the boundaries between a block in the current frame and a matching block in the reference frames. These discontinuities, often called blocking artifacts, add unwanted high frequencies that are encoded along with the difference and the motion vectors. In general, high frequencies are present in video containing a large amount of details, edges, sharp contrasts and discontinuities. On the other hand, low frequencies are present in video containing smooth transitions between, pixel intensity and less detail.
Blocking artifacts are a problem in traditional coding techniques for several reasons. First, the blocking artifacts are visible in the decoded video and greatly diminish the quality of the video. Second, as mentioned above, the blocking artifacts contain many high frequencies that must be encoded by the encoder. However, as is known in the art, coding high frequencies generally is more expensive that coding low frequencies. Third, the high frequencies present in the encoded data were created by the block based motion compensation technique. These high frequencies were not present in the reference frame or the current frame but were added without approval. These factors show that blocking artifacts greatly increase the expense of encoding and add undesirable high frequencies to the encoded data.
The traditional solution for blocking artifacts is to use a deblocking filter. Many of the standards listed above use deblocking feature. In general, the deblocking filter attenuates high frequencies present in the decoded data. The deblocking filter however, merely aids the high-frequency addition problem but does not solve it. In other words, the encoded data still has unwanted high frequencies that are added. Moreover, another problem is that the deblocking filter frequently indiscriminately removes all high frequencies, both unwanted and those high frequencies that are part of the data. Thus, the deblocking filter frequently attenuates the wrong frequencies. Therefore, there exists a need for a hierarchical data compression system and method that does not add unwanted frequencies during the coding process and eliminate block artifacts to produce higher-quality compression of video data.